/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jaywalkable.vkeyboard;

/**
 * Decodes the default keyboard input to <code>VKeyboardLayout</code> input.
 * 
 * @author Rubel Ahammad
 */
public interface VKeyboardDecoder extends VKeyboardKeyConverter{

    /**
     * Returns the <code>Character</code> array for corresponding parameter. Returns <code>Character[]</code> with only
     * element passed as a parameter if no match is found in keyboard layout.
     * 
     * @param c
     *            the <code>Character</code> array representing original keyboard input.
     * @return Character[] the <code>Character</code> array based on the parameter c.
     */
//    Character[] convert(Character ch);

    /**
     * Returns the <code>Character</code> array for corresponding parameter.
     * 
     * @param chars
     *            the <code>Character</code> sequence as a string, in most cases this will be a single
     *            <code>Character</code> as a <code>String</code>.
     * @return the decoded <code>Character</code> array.
     */
//    Character[] decode(String chars);

    /**
     * Applies decoding rules to the given <code>str</code> and returns the decoded <code>String</code>.
     * 
     * @param str
     *            the <code>String</code> to be decoded after applying all the decoding rules.
     * @return the <code>String</code> after applying the decoding rules to to <code>str</code>.
     */
    String applyDecodingRules(String str);

//    boolean hasMultpleRules();
}
